srvMap.add('queryStayLevelData','','front/sh/analysis!execute?uid=queryStayLevelData');
srvMap.add('queryStayCntsData','','front/sh/analysis!execute?uid=queryStayCntsData');
srvMap.add('downloadStayCntsTable','','front/sh/export!execute?uid=downloadStayCntsTable');
srvMap.add('downloadStayLevelTable','','front/sh/export!execute?uid=downloadStayLevelTable');
var stayLevelPieCharts; //驻留时长饼图
var stayCntsLineCharts; //驻留频次折线图
var lastQueryParamObj={};	//最近一次查询param--用于查询和下载同条件

/**
 * 用POST提交解决参数过长
 */
var _postSubmit = function(url, params) {
	var exportForm = document.createElement("FORM");
	document.body.appendChild(exportForm);
	exportForm.method = "POST";

	if (null != params && params.length > 0)
		for ( var i = 0; i < params.length; i++) {
			var param = params[i].split("=");
			var inputElement = document.createElement("input");
			inputElement.setAttribute("name", param[0]);
			inputElement.setAttribute("type", "hidden");
			exportForm.appendChild(inputElement);
			inputElement.value = fromatParam(param);
		}

	exportForm.action = url;
	exportForm.submit();

	document.body.removeChild(exportForm);
};
var fromatParam = function(param) {
	var res = "";
	for (var i = 1; i < param.length; i++) {
		res += param[i];
		if (i < (param.length - 1)) {
			res += "=";
		}
	}
	return res;
};


/**
 * load页面
 * */
$(function() {	
	//初始化人群轨迹分析图表的高度和宽度，使之能自适应屏幕
	initTrackChartLoc();
	
		initDataTime();
		Util.loadUpInfo.initCityList();
		Util.loadUpInfo.initRegionTypleList();
		Util.loadUpInfo.initRegionList();
		
		//绑定查询事件
		$(".select_button").on("click",function(){
			
			//获取界面参数
			var paramObj = {};
			paramObj = getParamObj(paramObj);
			
			lastQueryParamObj = paramObj;
			if(validateTime()){
			queryStayLevelData(paramObj);
			queryStayCntsData(paramObj);
			}			
		});
		
		//绑定日期类型radio切换事件
		$('input[name=dataTimeType]').on("change",function(){
			if( $(this).val() == "day" ){
				$("#dayStartDiv").show();
				$("#dayEndDiv").show();
				//var date=now_Date.format("yyyy-MM-dd"); 
				//$("#dayStart").val(date);
				$("#monthStartDiv").hide();
				$("#monthEndDiv").hide();
			}else{
				
				$("#monthStartDiv").show();
				$("#monthEndDiv").show();
				$("#dayStartDiv").hide();
				$("#dayEndDiv").hide();
			}
		});
		
	
	lastQueryParamObj = getParamsObj();
	//接收景区子监控页面传来的参数
	if( in_regionId != null && in_regionId.length > 0 ){
		lastQueryParamObj.regionId = in_regionId;
		
		$("#divselectInput").val(in_regionName);
		$("#inputselect").val(in_regionId);
	}
	
	//绑定下载按钮事件
	$("#exportStayLevelTable").on("click",function(){
		downloadStayLevelTable(lastQueryParamObj);
	});
	
	$("#exportStayCntsTable").on("click",function(){
		downloadStayCntsTable(lastQueryParamObj);
	});
	

	//查询驻留时长统计数据
	queryStayLevelData(lastQueryParamObj);
	
	//查询驻留频次统计数据
	queryStayCntsData(lastQueryParamObj);

});
/**
 * 时间校验
 * 
 * */
function validateTime(){
	var single=true;
	var startTime=$('#dateTime').find('input:visible').val();
	var endTime=$('#dateTimeEnd').find('input:visible').val();
	if(startTime==''||endTime==''){
		alert('请设置完整的查询时间！');
		single=false;
	}
//	if(startTime>endTime){
//		alert('开始时间不能大于结束时间！');
//		single=false;
//	}
	return single;
}



/**
 * 
 * @Description : 初始化时间控件
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年12月10日 下午10:05
 * 
 */
function initDataTime() {
	var dayStart = {
			elem: '#dayStart',
			format: 'YYYY-MM-DD',
			start: laydate.now(-183),
			min: laydate.now(-183),
			max: laydate.now(-1), //最大日期
			istime: false,
			festival: true,
			istoday: true,
			choose: function(datas){
				dayEnd.min = datas; //开始日选好后，重置结束日的最小日期
				dayEnd.start = datas //将结束日的初始值设定为开始日
		    }
		};
		
		var dayEnd = {
			elem: '#dayEnd',
			format: 'YYYY-MM-DD',
			min: laydate.now(-183),
			max: laydate.now(-1), //最大日期
			istime: false,
			festival: true,
			istoday: true,
			choose: function(datas){
				dayStart.max = datas; //结束日选好后，重置开始日的最大日期
		    }
		};
	
	var preMonth = getPreMonth(laydate.now());
	var preYear = laydate.now(-365).slice(0,7);
	var monthStart = {
		elem: '#monthStart',
		format: 'YYYY-MM',
		start:preMonth,
		min: preYear,
		max:preMonth,//开始、结束不能选同一个月；设置此处，可实现
		//max: preMonth, //最大日期
		istime: false,
		festival: true,
		istoday: false,
		choose: function(datas){
			monthEnd.min = datas; //开始日选好后，重置结束日的最小日期
			monthEnd.start = datas //将结束日的初始值设定为开始日
	    }
	};
		
	var monthEnd = {
		elem: '#monthEnd',
		format: 'YYYY-MM',
		start:preMonth,
		min: preYear,
		max:preMonth, //最大日期
		istime: false,
		festival: true,
		istoday: false,
		choose: function(datas){
			monthStart.max = datas; //结束日选好后，重置开始日的最大日期
	    }
	};
	
	laydate(dayStart);
	laydate(dayEnd);
	
	laydate(monthStart);
	laydate(monthEnd);
	
	//默认展示前12个月的数据
	$("#monthStart").val(preYear.slice(0,7));
	$("#monthEnd").val(preMonth.slice(0,7));
	$("#dayStart").val(laydate.now(-8));
	$("#dayEnd").val(laydate.now(-1));
}


/**
 * 获取当前时间上一个月日期
 * @Description : 
 * 
 * @return void
 *
 * @author : xuxiong
 * @date : 2015年12月18日 下午5:40:08 
 *
 */
function getPreMonth(date) {
    var arr = date.split('-');
    var year = arr[0]; //获取当前日期的年份
    var month = arr[1]; //获取当前日期的月份
    var day = arr[2]; //获取当前日期的日
    var days = new Date(year, month, 0);
    days = days.getDate(); //获取当前日期中月的天数
    var year2 = year;
    var month2 = parseInt(month) - 1;
    if (month2 == 0) {
        year2 = parseInt(year2) - 1;
        month2 = 12;
    }
    var day2 = day;
    var days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (month2 < 10) {
        month2 = '0' + month2;
    }
    var t2 = year2 + '-' + month2 + '-' + day2;
    return t2;
}




/**
 * 
 * @Description : echarts图表过滤动画隐藏
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年12月10日 下午10:05
 * 
 */
function hideLoading(chart) {
	if (chart != null) {
		chart.hideLoading();
	}
}

/**
 * 
 * @Description : echarts图表数据为空提示
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年12月10日 下午10:05
 * 
 */
function noDataShowSource(chart,id) {
	
	if (chart == null) {
		require.config({
			paths: {
				echarts: CONTENT_PATH + '/common/js'
			}
		});
		require(['echarts'], function(ec) {
			chart = ec.init(document.getElementById(id), 'macarons');
			chart.clear();
			showEmptyTip(chart);
		});
	} else {
		showEmptyTip(chart);
	}
}
/**
 * 
 * @Description : echarts图表数据为空提示
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年12月10日 下午10:05
 * 
 */
function showEmptyTip(chart) {
	chart.clear();
	if (chart != null) {
		chart.showLoading({
			text: '当前未查询到数据，请稍后再试',
			effect: 'bubble',
			textStyle: {
				fontSize: 22
			}
		});
	}
}


/**
 * 获取paramObj
 * @param paramObj
 * @returns {Boolean}
 */
function getParamObj(paramObj){
	
	paramObj.cityId = $('#citySelect span li').attr("d_value");	
	paramObj.regionType = $('#regionTypleSelect span li').attr("d_value");
	paramObj.regionId = $('#inputselect').val();
	paramObj.regionName = $("#divselectInput").val() || "";
	paramObj.cycleId = $('input[name="dataTimeType"]:checked').val();
	
	if( paramObj.cycleId == 'day'){
		paramObj.startTime = $('#dayStart').val();
		paramObj.endTime = $('#dayEnd').val();
	}else{
		paramObj.startTime = $('#monthStart').val();
		paramObj.endTime = $('#monthEnd').val();
	}
	
//	if( paramObj.startTime == null || paramObj.startTime.length == 0 ){
//		alert("请选择查询开始时间！");
//		return false;
//	}
//	
//	if( paramObj.endTime == null || paramObj.endTime.length == 0 ){
//		alert("请选择查询结束时间！");
//		return false;
//	}
	
	//如果选择了regionId，则忽略类型参数
	/*if( paramObj.regionId == null || paramObj.regionId.length == 0 ){
		paramObj.regionType = $('#regionType').val();
	}*/
	return paramObj;
}

/**
 * 获取页面参数
 * @returns {String}
 */
function getParamsObj() {
	
	var paramObj = {};
	paramObj.cityId = $('#citySelect span li').attr("d_value")|| "";
	paramObj.regionType = $('#regionTypleSelect span li').attr("d_value")|| "";
	paramObj.regionId = $('#inputselect').val()|| "";
	paramObj.regionName = $("#divselectInput").val() || "";
	paramObj.cycleId = $('input[name="dataTimeType"]:checked').val();
	paramObj.startTime="";
	paramObj.endTime="";
	if( paramObj.cycleId == 'day'){
		paramObj.startTime = $('#dayStart').val().replace("-","").replace("-","");
		paramObj.endTime = $('#dayEnd').val().replace("-","").replace("-","");
	}else{
		paramObj.startTime = $('#monthStart').val().replace("-","");
		paramObj.endTime = $('#monthEnd').val().replace("-","");
	}
	
	return paramObj;
}


/**
 * 
 * @Description : 查询驻留时长统计数据
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午15:01
 * 
 */
function queryStayLevelData(paramObj){
	//获取参数
	
	var par = "&cityId="+paramObj.cityId+"&regionId="+paramObj.regionId+"&regionType="+paramObj.regionType+"&cycleId="+paramObj.cycleId+"&startTime="+paramObj.startTime+"&endTime="+paramObj.endTime;
	Util.ajax.postJsonSync(srvMap.get('queryStayLevelData'),par,function(json,status){
		if(status){
			buildStayLevelTable(json.object);
			buildStayLevelPie(json.object);
			
			if( paramObj.startTime == null || paramObj.startTime.length == 0){	//初次加载，显示系统出数日期
				var year = json.object.startTime.slice(0,4);
				var month = json.object.startTime.slice(4,6);
				var day = json.object.startTime.slice(6,8);
				var _startTime = year+"-"+month+"-"+day;
				$("#dayStart").val(_startTime);
				
				year = json.object.endTime.slice(0,4);
				month = json.object.endTime.slice(4,6);
				day = json.object.endTime.slice(6,8);
				var _endTime = year+"-"+month+"-"+day;
				$("#dayEnd").val(_endTime);
				
				lastQueryParamObj.startTime = _startTime;
				lastQueryParamObj.endTime = _endTime;
			}
		}else{
			 alert('查询驻留时长统计数据出错！');   
		}
	});
}


/**
 * 
 * @Description : 查询驻留频次统计数据
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午15:01
 * 
 */
function queryStayCntsData(paramObj){
	//获取参数
	var par = "&cityId="+paramObj.cityId+"&regionId="+paramObj.regionId+"&regionType="+paramObj.regionType+"&cycleId="+paramObj.cycleId+"&startTime="+paramObj.startTime+"&endTime="+paramObj.endTime;
	Util.ajax.postJsonSync(srvMap.get('queryStayCntsData'),par,function(json,status){
		if(status){
			buildStayCntsTable(json.object);
			buildStayCntsLine(json.object);
		}
		else{
			}
	});
}


/**
 * 
 * @Description : 渲染驻留时长统计表格
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午16:01
 * 
 */
function buildStayLevelTable(data) {

	//无数据时，禁用下载按钮
	if ( data.isEmpty == 1 ) {
		$("#exportStayLevelTable").attr("disabled","disabled");
	}else{
		$("#exportStayLevelTable").removeAttr("disabled");
	}
	
	var i,j;
	
	var stayLevelDataMap = data.stayLevelData;
	var dataTimeList = data.dataTimeList;
	
	//合计数据
	var levelCnt = [];
	for( j=0; j<5; j++){
		levelCnt[j] = 0;
	}
	var tmpArray = [];
	
	var optime;
	var htmlContent = "";
	var strFormat = '<tr><td>$1</td><td>$2</td><td>$3</td><td>$4</td><td>$5</td><td>$6</td></tr>';
	for( i=0; i<dataTimeList.length; i++ ){
		optime = dataTimeList[i];
		tmpArray = stayLevelDataMap[optime];
		htmlContent += strFormat.replace("$1", optime)
								.replace("$2", tmpArray[0])
								.replace("$3", tmpArray[1])
								.replace("$4", tmpArray[2])
								.replace("$5", tmpArray[3])
								.replace("$6", tmpArray[4]);
		
		
		//计算合计
		for( j=0; j<5; j++){
			if( tmpArray[j] && tmpArray[j] != '-'){
				levelCnt[j] += parseInt(tmpArray[j]);
			}
		}
	}
	
	var strTotalFormat = '<tr style="font-weight:bold;"><td>合计</td><td>$1</td><td>$2</td><td>$3</td><td>$4</td><td>$5</td></tr>';
	htmlContent += strTotalFormat.replace("$1", levelCnt[0])
								.replace("$2", levelCnt[1])
								.replace("$3", levelCnt[2])
								.replace("$4", levelCnt[3])
								.replace("$5", levelCnt[4]);
	
	$("#stayLevelTableBody").html(htmlContent);
}

/**
 * 
 * @Description : 渲染驻留时长饼图
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午16:01
 * 
 */
function buildStayLevelPie(data) {
	
	hideLoading(stayLevelPieCharts);
	
	if ( data.isEmpty == 1 ) {
		noDataShowSource(stayLevelPieCharts, 'stayLevelPie');
		return;
	}

	
	//合计数据
	var levelCnt = [];
	for( j=0; j<5; j++){
		levelCnt[j] = 0;
	}
	var tmpArray = [];
	
	var stayLevelDataMap = data.stayLevelData;
	var dataTimeList = data.dataTimeList;
	
	for( i=0; i<dataTimeList.length; i++ ){
		optime = dataTimeList[i];
		tmpArray = stayLevelDataMap[optime];
		//计算合计
		for( j=0; j<5; j++){
			if( tmpArray[j] && tmpArray[j] != '-'){
				levelCnt[j] += parseInt(tmpArray[j]);
			}
		}
	}
	
	var pieData = levelCnt;
//	alert(pieData);
	require.config({
		paths: {
			echarts: CONTENT_PATH + '/common/js'
		}
	});
	require(
		[
			'echarts',
			'echarts/chart/pie'
		],
		function(ec) {
			
			option = {
				tooltip : {
					trigger: 'item',
					formatter: "{b}:<br/> {c} ({d}%)"
				},
				color: [
				'rgba(78, 202, 238, 1)',
				'rgba(0, 238, 238, 1)',
				'rgba(169, 249, 156, 1)',
				'rgba(242, 168, 168, 1)',
				'rgba(244, 249, 156, 1)'
				],
				legend: {
					orient : 'vertical',
					x : '75%',
					y : '45%',
					data:['[0,1)小时','[1,2)小时','[2,3)小时','[3,4)小时','[4,24]小时']
				},
				series : [
					{
						name:'客流来源',
						type:'pie',
						radius : '80%',
						center : ['40%', '50%'],
						itemStyle: {
			            	normal: {
			            		label: {
			            			position: 'outer',
			            			formatter: '{d}%',
			            			textStyle:{
			            				fontSize:14
			            			}
			            		},
			            		labelLine: {
			            			show: false,
			            			length:-10
			            		}
			            	}
			            },
						data:[
							{value:pieData[0], name:'[0,1)小时'},
							{value:pieData[1], name:'[1,2)小时'},
							{value:pieData[2], name:'[2,3)小时'},
							{value:pieData[3], name:'[3,4)小时'},
							{value:pieData[4], name:'[4,24]小时'}
						]
					}
				]
			};

			stayLevelPieCharts = ec.init(document.getElementById('stayLevelPie'),'macarons');
			stayLevelPieCharts.clear();
			stayLevelPieCharts.setOption(option); 
		}
	);
}


/**
 * 
 * @Description : 渲染驻留频次统计表格
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午16:31
 * 
 */
function buildStayCntsTable(data) {
	//无数据时，禁用下载按钮
	if ( data.isEmpty == 1 ) {
		$("#exportStayCntsTable").attr("disabled","disabled");
	}else{
		$("#exportStayCntsTable").removeAttr("disabled");
	}
	
	var i,j;
	
	var stayCntsDataMap = data.stayCntsData;
	var dataTimeList = data.dataTimeList;
	
	//合计数据
	var levelCnt = [];
	for( j=0; j<4; j++){
		levelCnt[j] = 0;
	}
	var tmpArray = [];
	
	
	var optime;
	var htmlContent = "";
	var strFormat = '<tr><td>$1</td><td>$2</td><td>$3</td><td>$4</td><td>$5</td></tr>';
	for( var i=0; i<dataTimeList.length; i++ ){
		optime = dataTimeList[i];
		tmpArray = stayCntsDataMap[optime];
		htmlContent += strFormat.replace("$1", optime)
								.replace("$2", tmpArray[0])
								.replace("$3", tmpArray[1])
								.replace("$4", tmpArray[2])
								.replace("$5", tmpArray[3]);
		
		//计算合计
		for( j=0; j<4; j++){
			if( tmpArray[j] && tmpArray[j] != '-'){
				levelCnt[j] += parseInt(tmpArray[j]);
			}
		}
	}
	
	var strTotalFormat = '<tr style="font-weight:bold;"><td>合计</td><td>$1</td><td>$2</td><td>$3</td><td>$4</td></tr>';
	htmlContent += strTotalFormat.replace("$1", levelCnt[0])
								.replace("$2", levelCnt[1])
								.replace("$3", levelCnt[2])
								.replace("$4", levelCnt[3]);
	$("#stayCntsTableBody").html(htmlContent);
}


/**
 * 
 * @Description : 渲染驻留频次折线图
 * @return void
 * 
 * @author : xuxiong
 * @date : 2015年11月17日 下午16:31
 * 
 */
function buildStayCntsLine(resultData) {
	
	hideLoading(stayCntsLineCharts);
	
	if ( resultData.isEmpty == 1 ) {
		noDataShowSource(stayCntsLineCharts, 'stayCntsLine');
		return;
	}

	var stayCntsDataMap = resultData.stayCntsData;
	var dataTimeList = resultData.dataTimeList;
	
	var stayCntLevel1=[];
	var stayCntLevel2=[];
	var stayCntLevel3=[];
	var stayCntLevel4=[];
	
	//格式化日期数据
	var xAxis=[];
	var dataTime = "";
	var year="";
	var mon="";
	var day="";
	var xName = "";
	
	for ( var i=0; i<dataTimeList.length; i++ ){
		dataTime = dataTimeList[i];
		
		//按层级汇集数据
		stayCntLevel1.push(stayCntsDataMap[dataTime][0]);
		stayCntLevel2.push(stayCntsDataMap[dataTime][1]);
		stayCntLevel3.push(stayCntsDataMap[dataTime][2]);
		stayCntLevel4.push(stayCntsDataMap[dataTime][3]);
		
		if( dataTime.length == 8 ){
			mon = dataTime.slice(4,6);
			day = dataTime.slice(6,8);
			dataTime = mon+"-"+day;
			xName = "日";
		}else{
			year = dataTime.slice(0,4);
			mon  = dataTime.slice(4,6);
			dataTime = year+"-"+mon;
			xName = "月";
		}
		xAxis.push(dataTime);
	}
	
	require.config({
		paths: {
			echarts: CONTENT_PATH + '/common/js'
		}
	});
	require(
		[
			'echarts',
			'echarts/chart/line'
		],
		function(ec) {

			option = {
				tooltip : {
					trigger : 'axis',
					textStyle : {
						align : 'left'
					}
				},
				legend: {
					x:'center',
					y:'top',
					orient:'horizontal',
					data:['1次','2次','3次','4次及以上']
				},
				color: [
					'rgba(135, 223, 109, 1)',
					'rgba(255, 173, 99, 1)',
					'rgba(93, 152, 255, 1)',
					'rgba(255, 110, 110, 1)'
				],
				calculable : false,
				xAxis : [
					{
						name: xName,
						type : 'category',
						axisLabel : {
							margin : 5,
							rotate : 45,
							textStyle : {
								align : 'left'
							}
						},
						splitLine : {
							show : false
						},
						//时间是最近一年，动态选择
						data : xAxis
					}
				],
				yAxis : [
					{
						name: "人数",
						type : 'value',
						/*splitNumber : 8,
						min : 0,
						max : 20000,*/
						axisLabel : {
							formatter: '{value}'
						}
					}
				],
				series : [
					{
						name:'1次',
						type:'line',
						symbol:'emptyCircle',
						data:stayCntLevel1
					},
					{
						name:'2次',
						type:'line',
						symbol:'emptyCircle',
						data:stayCntLevel2
					},{
						name:'3次',
						type:'line',
						symbol:'emptyCircle',
						data:stayCntLevel3
					},
					{
						name:'4次及以上',
						type:'line',
						symbol:'emptyCircle',
						data:stayCntLevel4
					}
				]
			};

			stayCntsLineCharts = ec.init(document.getElementById('stayCntsLine'));
			stayCntsLineCharts.clear();
			stayCntsLineCharts.setOption(option);
		}
	);
}


/**
 * 初始化轨迹图表所在的位置，避免大屏幕展示时无法填充整个屏幕
 * @author:xw.jiang
 * @date: 2016-04-25
 */
function initTrackChartLoc(){
	var width = document.body.clientWidth;
	var height = document.body.clientHeight;
	$("#track_left").css("height",(height/2));
	$("#track_left").css("width",(width/2)-59);
	$("#track_right").css("height",(height/2));
	$("#track_right").css("width",(width/2));
}


/**
 * 下载驻留频次数据
 * xiangzp
 */
function downloadStayCntsTable(paramObj) {
	var par = "&cityId="+paramObj.cityId+"&regionId="+paramObj.regionId+"&regionType="+paramObj.regionType+"&cycleId="+paramObj.cycleId+"&startTime="+paramObj.startTime+"&endTime="+paramObj.endTime;
	var url = srvMap.get('downloadStayCntsTable');
	_postSubmit(url, par.split("&"));
	return;
//	var str = getParamsStr();
//	window.open(CONTENT_PATH + "/com.asiainfo.zhly.AnalysisAction.downloadStayCntsTable.invoke?" + str, '_blank');
}

/**
 * 下载驻留时长数据
 * xiangzp
 */
function downloadStayLevelTable(paramObj) {
	var par = "&cityId="+paramObj.cityId+"&regionId="+paramObj.regionId+"&regionType="+paramObj.regionType+"&cycleId="+paramObj.cycleId+"&startTime="+paramObj.startTime+"&endTime="+paramObj.endTime;
	var url = srvMap.get('downloadStayLevelTable');
	_postSubmit(url, par.split("&"));
	return;
//	var str = getParamsStr();
//	window.open(CONTENT_PATH + "/com.asiainfo.zhly.AnalysisAction.downloadStayLevelTable.invoke?" + str, '_blank');
}